using System.Collections.Specialized;

namespace CloudStorage.API.Messages
{
  /// <summary>
  /// A Cloud Storage Message Queue
  /// </summary>
  public interface IMessageQueueDataContext : IMessageDataContext
  {
    /// <summary>
    ///  Address and credential info for the Queue
    /// </summary>
    IStorageAccountInfo StorageAccountInfo { get; }

    /// <summary>
    /// The name of the queue exposed as a public property.
    /// </summary>
    string Name { get; }    
    
    /// <summary>
    /// Deletes the queue. The queue will be deleted regardless of whether there are messages in the 
    /// queue or not.
    /// </summary>
    void DeleteQueue();

    /// <summary>
    /// Retrieves the queue's properties.
    /// </summary>
    /// <returns>The queue's properties.</returns>        
    IQueueMetadata GetQueueMetadata();

    /// <summary>
    /// Sets the properties of a queue.
    /// <param name="metadata">The metadata</param>
    /// </summary>
    void SetQueueMetadata(NameValueCollection metadata);    
  }
}